// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue';
import App from './App';
import router from './router';
import axios from 'axios';
import ElementUI from 'element-ui';
// import 'element-ui/lib/theme-chalk/index.css'
import './../theme/index.css';
import store from './components/vuex/store'; // 应用vuex
import moment from 'moment'; //时间格式化
import VueClipboard from 'vue-clipboard2'; //复制插件
import Blob from './vendor/Blob';
import Export2Excel from './vendor/Export2Excel';
// import GetData from "./utils/index"; // 封装的一些常用的方法
// import * as $dd from '@ali/dingtalk-jsapi'; // 此方式为整体加载，也可按需进行加载

import {
  ddlwp
} from 'ddlwp';

import {
  dingTalkPc
} from 'cnf-dingtalk-auth';

Vue.use(VueClipboard);
Vue.use(ElementUI);
Vue.prototype.$http = axios;
Vue.config.productionTip = false;

// 时间格式化
Vue.prototype.$moment = function (value, format) {
  if (!value) {
    return '';
  }
  return moment(value).format(format || 'YYYY-MM-DD HH:mm');
};
Vue.prototype.$pageSizes = [10, 20, 30, 40, 50, 100, 200, 500]; //分页大小

//导入过滤器
import './filter';

localStorage.setItem(
  'corpId',
  decodeURIComponent(
    (new RegExp('[?|&]' + 'corpId' + '=' + '([^&;]+?)(&|#|;|$)').exec(
      location.href
    ) || [, ''])[1]
    .replace(/\+/g, '%20')
  ) || ''
);
localStorage.setItem(
  'appkey',
  decodeURIComponent(
    (new RegExp('[?|&]' + 'appkey' + '=' + '([^&;]+?)(&|#|;|$)').exec(
      location.href
    ) || [, ''])[1]
    .replace(/\+/g, '%20')
  ) || ''
);

const way = '2'; //1之前 2ddlwp

if (way == '1') {
  let jsListApi = ['biz.contact.choose', 'biz.util.uploadImage'];
  dingTalkPc.ddConfig(jsListApi, '/api/isv/auth/getJsConfig').then(
    res => {
      // isvPC签名
      DingTalkPC.runtime.permission.requestAuthCode({
        // 免登
        corpId: localStorage.getItem('corpId'),
        onSuccess: function (result) {
          let authUrl =
            '/api/isv/auth/login' +
            ('?corpId=' +
              localStorage.getItem('corpId') +
              '&code=' +
              result.code +
              '&appkey=' +
              localStorage.getItem('appkey'));
          axios.get(authUrl).then(
            function (res) {
              if (res.data.success) {
                sessionStorage.setItem('myPower', res.data.result.qx || '');
                axios.defaults.headers.common['Authorization'] =
                  res.data.result.token; //请求头文件
                new Vue({
                  el: '#app',
                  router,
                  store,
                  components: {
                    App,
                  },
                  template: '<App/>',
                });
              } else {
                ElementUI.Message.warning({
                  message: res.data.errorMsg || `用户信息获取失败`,
                  type: 'warning',
                });
              }
            },
            function (err) {
              ElementUI.Message.warning({
                message: `免登失败`,
                type: 'warning',
              });
            }
          );
        },
        onFail: function (err) {
          ElementUI.Message.warning({
            message: `获取临时授权码失败`,
            type: 'warning',
          });
        },
      });
    },
    err => {
      ElementUI.Message.warning({
        message: err.errorMessage || `签名失败`,
        type: 'warning',
      });
    }
  );
} else {
  // 改成lwp方式不要签名，有此方式免登
  ddlwp(localStorage.getItem('corpId')).then(
    res => {
      console.log('ddlwp', res);
      axios.defaults.headers.common['Authorization'] = res.result.token; //请求头文件
      if (res.success) {
        queryRbacNewVue();
      } else {
        ElementUI.Message.warning({
          message: res.errorMsg || '用户信息获取失败',
          type: 'warning',
        });
      }
    },
    err => {
      ElementUI.Message.warning({
        message: err,
        type: 'warning',
      });
    }
  );
  async function queryRbacNewVue() {
    let res = await queryRbac();
    new Vue({
      el: '#app',
      router,
      store,
      components: {
        App,
      },
      template: '<App/>',
    });
  }

  function queryRbac() {
    return new Promise(resolve => {
      axios.get('/api/isv/rbac/queryRbac').then(
        res => {
          if (res.data.success) {
            sessionStorage.setItem('myPower', res.data.result.qx || '');
          }
          resolve('ok');
        },
        err => {
          resolve('ok');
        }
      );
    });
  }

  // $dd.biz.user.get({
  //   corpId: localStorage.getItem("corpId"),
  // }).then((getRes) => {
  //   console.log(getRes)
  //   $dd.internal.request.lwp({
  //     uri: '/r/Adaptor/YunqiI/getLWPLoginUserInfo',
  //     body: [],
  //     onSuccess: (res) => {
  //       console.log('lwp', res);
  //       if (!res.body) {
  //         ElementUI.Message.warning({
  //           message: `lwp环境异常`,
  //           type: "warning"
  //         });
  //         return;
  //       }
  //       if (res.body.success) {
  //         console.log('getRes.emplId', getRes.emplId);
  //         console.log('res.body.result', res.body.result);
  //         getLoginUser(res.body.result, getRes.emplId);
  //         // axios.defaults.headers.common['Authorization'] = res.body.result.token; //请求头文件
  //         // queryRbacNewVue();
  //       } else {
  //         ElementUI.Message.warning({
  //           message: res.body.errorMsg || `用户信息获取失败`,
  //           type: "warning"
  //         });
  //       }
  //     },
  //     onFail: (err) => {
  //       ElementUI.Message.warning({
  //         message: `lwp接口失败`,
  //         type: "warning"
  //       });
  //     },
  //   });
  // }, err => {
  //   ElementUI.Message.warning({
  //     message: `get接口失败`,
  //     type: "warning"
  //   });
  // })

  // function getLoginUser(token, userId) {
  //   let authUrl = `/api/isv/loginUser/getLoginUser?token=${token}&corpId=${localStorage.getItem("corpId")}&userId=${userId}`;
  //   console.log('authUrl', authUrl);
  //   axios.get(authUrl).then(res => {
  //     console.log('aaa', res);
  //     if (res.data.success) {
  //       axios.defaults.headers.common['Authorization'] = res.data.result.token; //请求头文件
  //       queryRbacNewVue();
  //     } else {
  //       ElementUI.Message.warning({
  //         message: res.data.errorMsg || `用户信息获取失败`,
  //         type: "warning"
  //       });
  //     }

  //   }, err => {
  //     ElementUI.Message.warning({
  //       message: `获取用户信息失败`,
  //       type: "warning"
  //     });
  //   });
  // }

  // async function queryRbacNewVue() {
  //   let res = await queryRbac();
  //   new Vue({
  //     el: '#app',
  //     router,
  //     store,
  //     components: {
  //       App
  //     },
  //     template: '<App/>'
  //   })

  // }

  // function queryRbac() {
  //   return new Promise((resolve) => {
  //     axios.get('/api/isv/rbac/queryRbac').then(res => {
  //       if (res.data.success) {
  //         sessionStorage.setItem("myPower", res.data.result || "");
  //       }
  //       resolve("ok");
  //     }, err => {
  //       resolve("ok");
  //     });
  //   });
  // }
}
// new Vue({
//     el: '#app',
//     router,
//     store,
//     components: {
//         App
//     },
//     template: '<App/>',
// })
